﻿Public Class xtf_ABMComposicion 
    Public obj_articulocomposicionproceso As cls_articulocomposicionproceso_
    Public obj_articulocomposicionarticulo As cls_articulocomposicionarticulo_
    Public obj_articulocomposicionmaquinariatarea As cls_articulocomposicionmaquinariatarea_

    Dim int_idarticuloprimario As Integer
    Dim obj_unidaddetalleprimario As cls_unidaddetalle_

#Region "TAB: Composicion"
    Private Sub TABComposicionCargar()
        lbl_Progreso.Text = ""
        If Not IsNothing(obj_articulocomposicionarticulo) Then
            cbo_TipoComponente.SelectedIndex = 0
        End If
        If Not IsNothing(obj_articulocomposicionproceso) Then
            cbo_TipoComponente.SelectedIndex = 1
        End If
        If Not IsNothing(obj_articulocomposicionmaquinariatarea) Then
            cbo_TipoComponente.SelectedIndex = 2
        End If
        Select Case cbo_TipoComponente.SelectedIndex
            Case 0 'Articulo
                If Not IsNothing(obj_articulocomposicionarticulo.articulo) Then
                    txt_componente.Text = obj_articulocomposicionarticulo.articulo.ToString
                    txt_componente.Tag = obj_articulocomposicionarticulo.articulo
                End If
            Case 1 'Proceso
                If Not IsNothing(obj_articulocomposicionproceso.proceso) Then
                    txt_componente.Text = obj_articulocomposicionproceso.proceso.ToString
                    txt_componente.Tag = obj_articulocomposicionproceso.proceso
                End If
            Case 2 'ProcesoMquinaria
                If Not IsNothing(obj_articulocomposicionmaquinariatarea.maquinaria) Then
                    txt_componente.Text = obj_articulocomposicionmaquinariatarea.maquinaria.ToString
                    txt_componente.Tag = obj_articulocomposicionmaquinariatarea.maquinaria
                End If
        End Select
        If Not IsNothing(txt_componente.Tag) Then
            cargarDetalle()
        End If
    End Sub

    Private Sub cbo_TipoComponente_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbo_TipoComponente.SelectedIndexChanged
        Select Case cbo_TipoComponente.SelectedIndex
            Case 0 'Articulo
                lci_Componente.Text = "Articulo:"
            Case 1 'Proceso
                lci_Componente.Text = "Proceso de personal:"
            Case 2 'ProcesoMquinaria
                lci_Componente.Text = "Proceso de maquinaria:"
        End Select
        txt_componente.Text = ""
        txt_componente.Tag = Nothing
        lbl_Descripcion.Text = ""
    End Sub

    Private Sub txt_componente_ButtonClick(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.ButtonPressedEventArgs) Handles txt_componente.ButtonClick
        Dim buscar As xtf_buscardor = Nothing
        Select Case cbo_TipoComponente.SelectedIndex
            Case 0 'Articulo
                Dim articulo_ As New cls_articulo_
                articulo_.CargarTodos()
                buscar = New xtf_buscardor("Articulos", articulo_, {"nombre|Nombre", "codigo|Codigo", "descripcion|Descripcion"})
            Case 1 'Proceso
                Dim proceso_ As New cls_proceso_
                proceso_.CargarTodos()
                buscar = New xtf_buscardor("Procesos Personales", proceso_, {"nombre|Nombre", "descripcion|Descripcion"})
            Case 2 'ProcesoMquinaria
                Dim maquinariatarea_ As New cls_maquinariatarea_
                maquinariatarea_.CargarTodos()
                buscar = New xtf_buscardor("Procesos Maquinaria", maquinariatarea_, {"nombre|Nombre", "descripcion|Descripcion"})
        End Select
        If buscar.ShowDialog() = Windows.Forms.DialogResult.OK Then
            txt_componente.Text = buscar.obj_resultado.ToString
            txt_componente.Tag = buscar.obj_resultado

            cargarDetalle()

            btn_Siguiente.Enabled = True
        End If
    End Sub

    Private Sub cargarDetalle()
        Select Case cbo_TipoComponente.SelectedIndex
            Case 0 'Articulo
                Dim articulo As cls_articulo_ = txt_componente.Tag
                lbl_Descripcion.Text = _
                    "Codigo: " & articulo.codigo & vbNewLine & _
                    "Rubro: " & articulo.articulorubro.ToString & vbNewLine & _
                    "Descripcion: " & articulo.descripcion & vbNewLine & _
                    "Costo: " & articulo.costo & vbNewLine & _
                    "Unidad: " & articulo.unidaddetalle.ToString
            Case 1 'Proceso
                Dim proceso As cls_proceso_ = txt_componente.Tag
                lbl_Descripcion.Text = _
                    "Descripcion: " & proceso.descripcion & vbNewLine & _
                    "Valor unitario: " & proceso.valor
            Case 2 'ProcesoMquinaria
                Dim maquinariatarea As cls_maquinariatarea_ = txt_componente.Tag
                lbl_Descripcion.Text = _
                    "Descripcion: " & maquinariatarea.descripcion & vbNewLine & _
                    "Valor unitario: " & maquinariatarea.valor
        End Select
    End Sub

    Private Sub GuardarComposicion()

        Select Case cbo_TipoComponente.SelectedIndex
            Case 0 'Articulo
                obj_articulocomposicionproceso = Nothing
                obj_articulocomposicionmaquinariatarea = Nothing
                If IsNothing(obj_articulocomposicionarticulo) Then
                    obj_articulocomposicionarticulo = New cls_articulocomposicionarticulo_
                End If
                obj_articulocomposicionarticulo.articulo = Nothing
                obj_articulocomposicionarticulo.idarticulo = CType(txt_componente.Tag, cls_articulo_).idarticulo
                obj_articulocomposicionarticulo.idarticuloprimario = int_idarticuloprimario
            Case 1 'Proceso
                obj_articulocomposicionarticulo = Nothing
                obj_articulocomposicionmaquinariatarea = Nothing
                If IsNothing(obj_articulocomposicionproceso) Then
                    obj_articulocomposicionproceso = New cls_articulocomposicionproceso_
                End If
                obj_articulocomposicionproceso.proceso = Nothing
                obj_articulocomposicionproceso.idproceso = CType(txt_componente.Tag, cls_proceso_).idproceso
                obj_articulocomposicionproceso.idarticuloprimario = int_idarticuloprimario
            Case 2 'ProcesoMquinaria
                obj_articulocomposicionarticulo = Nothing
                obj_articulocomposicionproceso = Nothing
                If IsNothing(obj_articulocomposicionmaquinariatarea) Then
                    obj_articulocomposicionmaquinariatarea = New cls_articulocomposicionmaquinariatarea_
                End If
                obj_articulocomposicionmaquinariatarea.maquinariatarea = Nothing
                obj_articulocomposicionmaquinariatarea.idmaquinariatarea = CType(txt_componente.Tag, cls_maquinariatarea_).idmaquinariatarea
                obj_articulocomposicionmaquinariatarea.idarticuloprimario = int_idarticuloprimario
        End Select
        lbl_Progreso.Text = txt_componente.Text
    End Sub

#End Region

#Region "TAB: Valor"

    Private Sub TABValorCargar()
        lbl_Progreso.Text = Replace(lbl_Progreso.Text, " > " & Split(lbl_Progreso.Text, " > ")(Split(lbl_Progreso.Text, " > ").Length - 1), "")
        lcg_ValorArticulo.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
        lcg_ValorProceso.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
        lcg_ValorMaquinaria.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
        Select Case cbo_TipoComponente.SelectedIndex
            Case 0 'Articulo
                Cargarunidaddetalle_()
                CargarSegunValorArticulo()
                lcg_ValorArticulo.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                ValorCargarArticulo()
            Case 1 'Proceso
                CargarSegunValorProceso()
                lcg_ValorProceso.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                ValorCargarProceso()
            Case 2 'ProcesoMquinaria
                CargarSegunValorMaquinaria()
                lcg_ValorMaquinaria.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                ValorCargarMaquinaria()
        End Select
    End Sub

    Private Sub GuardarValor()
        Select Case cbo_TipoComponente.SelectedIndex
            Case 0 'Articulo
                obj_articulocomposicionarticulo.tiposegunproveedor = cbo_ArticuloTipoSegunValor.SelectedIndex
                obj_articulocomposicionarticulo.idunidaddetalle = CType(cbo_unidadValor.SelectedItem, cls_unidaddetalle_).idunidaddetalle
                obj_articulocomposicionarticulo.valor = txt_ArticuloValor.Text
                lbl_Progreso.Text &= " > Valor: " & txt_ArticuloValor.Text & CType(cbo_unidadValor.SelectedItem, cls_unidaddetalle_).simbolo
            Case 1 'Proceso
                obj_articulocomposicionproceso.tiposegunvalor = cbo_ProcesoTipoSegunValor.SelectedIndex
                obj_articulocomposicionproceso.valor(CDec(txt_ProcesoValor.Text))
                lbl_Progreso.Text &= " > Valor: " & txt_ProcesoValor.Text
            Case 2 'ProcesoMquinaria
                obj_articulocomposicionmaquinariatarea.tiposegunvalor = cbo_MaquinariaTipoSegunValor.SelectedIndex
                obj_articulocomposicionmaquinariatarea.valor(CDec(txt_MaquinariaValor.Text))
                lbl_Progreso.Text &= " > Valor: " & txt_MaquinariaValor.Text
        End Select

    End Sub

#Region "Articulo"
    Private Sub ValorCargarArticulo()
        txt_ArticuloValor.Text = obj_articulocomposicionarticulo.valor
        cbo_ArticuloTipoSegunValor.SelectedIndex = obj_articulocomposicionarticulo.tiposegunproveedor
        cbo_ArticuloTipoSegunValor_SelectedIndexChanged(Nothing, Nothing)
        If Not IsNothing(obj_articulocomposicionarticulo.unidaddetalle) Then
            For Each unidaddetalle As cls_unidaddetalle_ In cbo_unidadValor.Properties.Items
                If unidaddetalle.idunidaddetalle = obj_articulocomposicionarticulo.idunidaddetalle Then
                    cbo_unidadValor.SelectedItem = unidaddetalle
                    Exit For
                End If
            Next
        End If
        If Not IsNothing(obj_articulocomposicionarticulo.proveedor) Then
            txt_Proveedor.Text = obj_articulocomposicionarticulo.proveedor.ToString
            txt_Proveedor.Tag = obj_articulocomposicionarticulo.proveedor
        End If
    End Sub
    Private Sub CargarSegunValorArticulo()
        cbo_ArticuloTipoSegunValor.Properties.Items.Clear()
        For Each tipocosto As cls_articulocomposicionarticulo_.enu_segunvalor In [Enum].GetValues(GetType(cls_articulocomposicionarticulo_.enu_segunvalor))
            cbo_ArticuloTipoSegunValor.Properties.Items.Add(EnumDescription(tipocosto))
        Next
        cbo_ArticuloTipoSegunValor.SelectedIndex = 0
    End Sub
    Private Sub Cargarunidaddetalle_()
        If Not IsNothing(txt_componente.Tag) Then
            If Not IsNothing(CType(txt_componente.Tag, cls_articulo_).unidad) Then
                cbo_unidadValor.Properties.Items.Clear()
                cbo_UnidadCantidad.Properties.Items.Clear()
                For Each unidaddetalle As cls_unidaddetalle_ In CType(txt_componente.Tag, cls_articulo_).unidad.unidaddetalle_.Items
                    cbo_unidadValor.Properties.Items.Add(unidaddetalle)
                    cbo_UnidadCantidad.Properties.Items.Add(unidaddetalle)
                Next
                cbo_unidadValor.SelectedIndex = 0
                cbo_unidadValor.Enabled = True
            End If
        End If
    End Sub

    Private Sub txt_Proveedor_ButtonClick(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.ButtonPressedEventArgs) Handles txt_Proveedor.ButtonClick
        Dim buscar As xtf_buscardor
        Dim proveedor_ As New cls_proveedor_
        proveedor_.CargarXidarticulo(CType(txt_componente.Tag, cls_articulo_).idarticulo, True)
        buscar = New xtf_buscardor("Proveedores", proveedor_, {"codigo|Codigo", "razonsocial|Razon Social"})
        If buscar.ShowDialog() = Windows.Forms.DialogResult.OK Then
            txt_Proveedor.Text = buscar.obj_resultado.ToString
            txt_Proveedor.Tag = buscar.obj_resultado
            cbo_ArticuloTipoSegunValor_SelectedIndexChanged(Nothing, Nothing)
        End If
    End Sub

    Private Sub cbo_ArticuloTipoSegunValor_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbo_ArticuloTipoSegunValor.SelectedIndexChanged
        If Not IsNothing(txt_componente.Tag) Then
            If CType(txt_componente.Tag, cls_articulo_).costobloqueado Then
                cargarCosto(CType(txt_componente.Tag, cls_articulo_))
            Else
                txt_Proveedor.Enabled = False
                txt_ArticuloValor.Properties.ReadOnly = True
                Select Case cbo_ArticuloTipoSegunValor.SelectedIndex
                    Case cls_articulocomposicionarticulo_.enu_segunvalor.fijo
                        txt_ArticuloValor.Text = 0
                        txt_ArticuloValor.Properties.ReadOnly = False
                    Case cls_articulocomposicionarticulo_.enu_segunvalor.proveedor
                        txt_Proveedor.Enabled = True
                        If Not IsNothing(txt_Proveedor.Tag) Then
                            txt_ArticuloValor.Text = CType(cbo_unidadValor.SelectedItem, cls_unidaddetalle_).CValCargar(CType(txt_componente.Tag, cls_articulo_).costo(cbo_ArticuloTipoSegunValor.SelectedIndex, CType(txt_Proveedor.Tag, cls_proveedor_).idproveedor))
                        Else
                            txt_ArticuloValor.Text = 0
                        End If
                    Case Else
                        txt_ArticuloValor.Text = CType(cbo_unidadValor.SelectedItem, cls_unidaddetalle_).CValCargar(CType(txt_componente.Tag, cls_articulo_).costo(CType(cbo_ArticuloTipoSegunValor.SelectedIndex, cls_articulo_.enu_tipocosto)))
                End Select
            End If
        End If
    End Sub
    Private Sub cargarCosto(ByRef prm_articulo As cls_articulo_)
        cbo_ArticuloTipoSegunValor.SelectedIndex = prm_articulo.tipocosto
        txt_ArticuloValor.Text = CType(cbo_unidadValor.SelectedItem, cls_unidaddetalle_).CValCargar(prm_articulo.costo)
        Select Case prm_articulo.tipocosto
            Case cls_articulo_.enu_tipocosto.proveedor
                txt_Proveedor.Tag = prm_articulo.proveedor
                txt_Proveedor.Text = prm_articulo.proveedor.ToString
        End Select
        lcg_ValorArticulo.Enabled = False
    End Sub
    Private Sub cbo_unidadValor_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbo_unidadValor.SelectedIndexChanged
        cbo_ArticuloTipoSegunValor_SelectedIndexChanged(Nothing, Nothing)
    End Sub
#End Region
#Region "Proceso"
    Private Sub ValorCargarProceso()
        txt_ProcesoValor.Text = obj_articulocomposicionproceso.valor
        cbo_ProcesoTipoSegunValor.SelectedIndex = obj_articulocomposicionproceso.tiposegunvalor
        cbo_ProcesoTipoSegunValor_SelectedIndexChanged(Nothing, Nothing)
        If Not IsNothing(obj_articulocomposicionproceso.personal) Then
            txt_personal.Text = obj_articulocomposicionproceso.personal.ToString
            txt_personal.Tag = obj_articulocomposicionproceso.personal
        End If
    End Sub
    Private Sub CargarSegunValorProceso()
        cbo_ProcesoTipoSegunValor.Properties.Items.Clear()
        For Each tipocosto As cls_articulocomposicionproceso_.enu_segunvalor In [Enum].GetValues(GetType(cls_articulocomposicionproceso_.enu_segunvalor))
            cbo_ProcesoTipoSegunValor.Properties.Items.Add(EnumDescription(tipocosto))
        Next
        cbo_ProcesoTipoSegunValor.SelectedIndex = 0
    End Sub
    Private Sub txt_personal_ButtonClick(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.ButtonPressedEventArgs) Handles txt_personal.ButtonClick
        Dim buscar As xtf_buscardor
        Dim proceso_ As New cls_personal_
        proceso_.CargarTodos()
        buscar = New xtf_buscardor("Personal", proceso_, {"legajo|Legajo", "apellidonombre|Nombre"})
        If buscar.ShowDialog() = Windows.Forms.DialogResult.OK Then
            txt_personal.Text = buscar.obj_resultado.ToString
            txt_personal.Tag = buscar.obj_resultado
            cbo_ProcesoTipoSegunValor_SelectedIndexChanged(Nothing, Nothing)
        End If
    End Sub
    Private Sub cbo_ProcesoTipoSegunValor_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbo_ProcesoTipoSegunValor.SelectedIndexChanged
        If Not IsNothing(txt_componente.Tag) Then
            txt_ProcesoValor.Enabled = False
            txt_personal.Enabled = False
            Select Case cbo_ProcesoTipoSegunValor.SelectedIndex
                Case cls_articulocomposicionproceso_.enu_segunvalor.fijo
                    txt_ProcesoValor.Enabled = True
                Case cls_articulocomposicionproceso_.enu_segunvalor.personal
                    txt_personal.Enabled = True
                    If Not IsNothing(txt_personal.Tag) Then
                        txt_ProcesoValor.Text = obj_articulocomposicionproceso.valor(CType(cbo_ProcesoTipoSegunValor.SelectedIndex, cls_articulocomposicionproceso_.enu_segunvalor), (CType(txt_personal.Tag, cls_personal_).idpersonal)) * 60
                    Else
                        txt_ProcesoValor.Text = 0
                    End If
                Case cls_articulocomposicionproceso_.enu_segunvalor.valorProceso
                    txt_ProcesoValor.Text = obj_articulocomposicionproceso.valor(CType(cbo_ProcesoTipoSegunValor.SelectedIndex, cls_articulocomposicionproceso_.enu_segunvalor), 0)
                Case Else
                    txt_ProcesoValor.Text = obj_articulocomposicionproceso.valor(CType(cbo_ProcesoTipoSegunValor.SelectedIndex, cls_articulocomposicionproceso_.enu_segunvalor), 0) * 60
            End Select
        End If
    End Sub
#End Region
#Region "Maquinaria"
    Private Sub ValorCargarMaquinaria()
        txt_MaquinariaValor.Text = obj_articulocomposicionmaquinariatarea.valor
        cbo_MaquinariaTipoSegunValor.SelectedIndex = obj_articulocomposicionmaquinariatarea.tiposegunvalor
        cbo_MaquinariaTipoSegunValor_SelectedIndexChanged(Nothing, Nothing)
        If Not IsNothing(obj_articulocomposicionmaquinariatarea.maquinaria) Then
            txt_maquinaria.Text = obj_articulocomposicionmaquinariatarea.maquinaria.ToString
            txt_maquinaria.Tag = obj_articulocomposicionmaquinariatarea.maquinaria
        End If
    End Sub
    Private Sub CargarSegunValorMaquinaria()
        cbo_MaquinariaTipoSegunValor.Properties.Items.Clear()
        For Each tipocosto As cls_articulocomposicionmaquinariatarea_.enu_segunvalor In [Enum].GetValues(GetType(cls_articulocomposicionmaquinariatarea_.enu_segunvalor))
            cbo_MaquinariaTipoSegunValor.Properties.Items.Add(EnumDescription(tipocosto))
        Next
        cbo_MaquinariaTipoSegunValor.SelectedIndex = 0
    End Sub
    Private Sub txt_maquinaria_ButtonClick(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.ButtonPressedEventArgs) Handles txt_maquinaria.ButtonClick
        Dim buscar As xtf_buscardor
        Dim maquinaria_ As New cls_maquinaria_
        maquinaria_.CargarTodos()
        buscar = New xtf_buscardor("Maquinaria", maquinaria_, {"nombre|Nombre"})
        If buscar.ShowDialog() = Windows.Forms.DialogResult.OK Then
            txt_maquinaria.Text = buscar.obj_resultado.ToString
            txt_maquinaria.Tag = buscar.obj_resultado
            cbo_MaquinariaTipoSegunValor_SelectedIndexChanged(Nothing, Nothing)
        End If
    End Sub
    Private Sub cbo_MaquinariaTipoSegunValor_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbo_MaquinariaTipoSegunValor.SelectedIndexChanged
        If Not IsNothing(obj_articulocomposicionmaquinariatarea) Then
            txt_MaquinariaValor.Enabled = False
            txt_maquinaria.Enabled = False
            Select Case cbo_MaquinariaTipoSegunValor.SelectedIndex
                Case cls_articulocomposicionmaquinariatarea_.enu_segunvalor.fijo
                    txt_MaquinariaValor.Enabled = True
                Case cls_articulocomposicionmaquinariatarea_.enu_segunvalor.proveedor
                    txt_maquinaria.Enabled = True
                    If Not IsNothing(txt_maquinaria.Tag) Then
                        txt_MaquinariaValor.Text = obj_articulocomposicionmaquinariatarea.valor(CType(cbo_MaquinariaTipoSegunValor.SelectedIndex, cls_articulocomposicionmaquinariatarea_.enu_segunvalor), (CType(txt_maquinaria.Tag, cls_maquinaria_).idmaquinaria)) * 60
                    Else
                        txt_MaquinariaValor.Text = 0
                    End If
                Case cls_articulocomposicionmaquinariatarea_.enu_segunvalor.proveedorUltimo
                    txt_MaquinariaValor.Text = obj_articulocomposicionmaquinariatarea.valor(CType(cbo_MaquinariaTipoSegunValor.SelectedIndex, cls_articulocomposicionmaquinariatarea_.enu_segunvalor), 0)
                Case Else
                    txt_MaquinariaValor.Text = obj_articulocomposicionmaquinariatarea.valor(CType(cbo_MaquinariaTipoSegunValor.SelectedIndex, cls_articulocomposicionmaquinariatarea_.enu_segunvalor), 0) * 60
            End Select
        End If
    End Sub
#End Region

#End Region

#Region "TAB: Cantidad"

    Private Sub TABCantidadCargar()
        If Split(lbl_Progreso.Text, " > ").Length > 2 Then
            lbl_Progreso.Text = Replace(lbl_Progreso.Text, " > " & Split(lbl_Progreso.Text, " > ")(Split(lbl_Progreso.Text, " > ").Length - 1), "")
        End If
        lcg_CantidadArticulo.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
        lcg_CantidadProceso.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
        lcg_CantidadMaquinaria.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
        Select Case cbo_TipoComponente.SelectedIndex
            Case 0 'Articulo
                CargarSegunProduccionArticulo()
                Cargarunidaddetalle_()
                lcg_CantidadArticulo.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                CantidadCargarArticulo()
            Case 1 'Proceso
                CargarSegunProduccionProceso()
                lcg_CantidadProceso.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                CantidadCargarProceso()
            Case 2 'ProcesoMquinaria
                CargarSegunProduccionMaquinaria()
                lcg_CantidadMaquinaria.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
                CantidadCargarMaquinaria()
        End Select
    End Sub

    Private Sub GuardarCantidad()
        Select Case cbo_TipoComponente.SelectedIndex
            Case 0 'Articulo
                If cbo_TipoSegunProduccionArticulo.SelectedIndex = 0 Then
                    obj_articulocomposicionarticulo.tiposegunproduccion = 0
                Else
                    obj_articulocomposicionarticulo.tiposegunproduccion = cbo_TipoSegunProduccionArticulo.SelectedIndex + 5
                End If
                obj_articulocomposicionarticulo.idunidaddetalle = CType(cbo_UnidadCantidad.SelectedItem, cls_unidaddetalle_).idunidaddetalle
                obj_articulocomposicionarticulo.cantidad(CDec(txt_CantidadArticulo.Text))
                lbl_Progreso.Text &= " > Cant.: " & obj_articulocomposicionarticulo.cantidad
            Case 1 'Proceso
                If cbo_TipoSegunProduccionProceso.SelectedIndex = 0 Then
                    obj_articulocomposicionproceso.tiposegunproduccion = 0
                Else
                    obj_articulocomposicionproceso.tiposegunproduccion = cbo_TipoSegunProduccionProceso.SelectedIndex + 5
                End If
                obj_articulocomposicionproceso.cantidad(CDec(txt_CantidadProceso.Value))
                lbl_Progreso.Text &= " > Tiempo: " & obj_articulocomposicionproceso.cantidad
            Case 2 'ProcesoMquinaria
                If cbo_TipoSegunProduccionMaquinaria.SelectedIndex = 0 Then
                    obj_articulocomposicionmaquinariatarea.tiposegunproduccion = 0
                Else
                    obj_articulocomposicionmaquinariatarea.tiposegunproduccion = cbo_TipoSegunProduccionMaquinaria.SelectedIndex
                End If
                obj_articulocomposicionmaquinariatarea.cantidad(CDec(txt_CantidadMaquinaria.Value))
                lbl_Progreso.Text &= " > Tiempo: " & obj_articulocomposicionmaquinariatarea.cantidad
        End Select

    End Sub

#Region "Articulo"
    Private Sub CantidadCargarArticulo()
        txt_CantidadArticulo.Text = obj_articulocomposicionarticulo.cantidad
        cbo_UnidadCantidad.SelectedIndex = cbo_unidadValor.SelectedIndex
        If obj_articulocomposicionarticulo.tiposegunproduccion = cls_articulocomposicionarticulo_.enu_segunproduccion.fijo Then
            cbo_TipoSegunProduccionArticulo.SelectedIndex = 0
        Else
            cbo_TipoSegunProduccionArticulo.SelectedIndex = obj_articulocomposicionarticulo.tiposegunproduccion - 5
        End If
        cbo_TipoSegunProduccionArticulo_SelectedIndexChanged(Nothing, Nothing)
    End Sub
    Private Sub CargarSegunProduccionArticulo()
        cbo_TipoSegunProduccionArticulo.Properties.Items.Clear()
        For Each tipocosto As cls_articulocomposicionarticulo_.enu_segunproduccion In [Enum].GetValues(GetType(cls_articulocomposicionarticulo_.enu_segunproduccion))
            cbo_TipoSegunProduccionArticulo.Properties.Items.Add(EnumDescription(tipocosto))
        Next
        cbo_TipoSegunProduccionArticulo.SelectedIndex = 0
    End Sub
    Private Sub cbo_TipoSegunProduccionArticulo_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbo_TipoSegunProduccionArticulo.SelectedIndexChanged
        txt_CantidadArticulo.Properties.ReadOnly = True
        Select Case cbo_TipoSegunProduccionArticulo.SelectedIndex
            Case cls_articulocomposicionarticulo_.enu_segunproduccion.fijo
                txt_CantidadArticulo.Properties.ReadOnly = False
                txt_CantidadArticulo.Text = obj_articulocomposicionarticulo.cantidad(cls_articulocomposicionarticulo_.enu_segunproduccion.fijo)
            Case Else
                txt_CantidadArticulo.Text = obj_unidaddetalleprimario.CValCargar(CType(cbo_UnidadCantidad.SelectedItem, cls_unidaddetalle_).CCantCargar(obj_articulocomposicionarticulo.cantidad(CType(cbo_TipoSegunProduccionArticulo.SelectedIndex + 5, cls_articulocomposicionarticulo_.enu_segunproduccion))))
        End Select
    End Sub
    Private Sub cbo_UnidadCantidad_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbo_UnidadCantidad.SelectedIndexChanged
        cbo_TipoSegunProduccionArticulo_SelectedIndexChanged(Nothing, Nothing)
    End Sub
#End Region
#Region "Proceso"
    Private Sub CantidadCargarProceso()
        txt_CantidadProceso.Value = obj_articulocomposicionproceso.cantidad
            If obj_articulocomposicionproceso.tiposegunproduccion = cls_articulocomposicionproceso_.enu_segunproduccion.fijo Then
                cbo_TipoSegunProduccionProceso.SelectedIndex = 0
            Else
                cbo_TipoSegunProduccionProceso.SelectedIndex = obj_articulocomposicionproceso.tiposegunproduccion - 5
            End If
        cbo_TipoSegunProduccionProceso_SelectedIndexChanged(Nothing, Nothing)
        If obj_articulocomposicionproceso.tiposegunvalor = cls_articulocomposicionproceso_.enu_segunvalor.valorProceso Then
            cbo_TipoSegunProduccionProceso.SelectedIndex = 0
            txt_CantidadProceso.Value = 1
            lcg_CantidadProceso.Enabled = False
        Else
            lcg_CantidadProceso.Enabled = True
        End If
    End Sub
    Private Sub CargarSegunProduccionProceso()
        cbo_TipoSegunProduccionProceso.Properties.Items.Clear()
        For Each tipocosto As cls_articulocomposicionproceso_.enu_segunproduccion In [Enum].GetValues(GetType(cls_articulocomposicionproceso_.enu_segunproduccion))
            cbo_TipoSegunProduccionProceso.Properties.Items.Add(EnumDescription(tipocosto))
        Next
        cbo_TipoSegunProduccionProceso.SelectedIndex = 0
    End Sub
    Private Sub cbo_TipoSegunProduccionProceso_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbo_TipoSegunProduccionProceso.SelectedIndexChanged
        If Not IsNothing(obj_articulocomposicionproceso) Then
            txt_CantidadProceso.Enabled = False
            'txt_Valor.Properties.ReadOnly = True
            Select Case cbo_TipoSegunProduccionProceso.SelectedIndex
                Case cls_articulocomposicionproceso_.enu_segunproduccion.fijo
                    txt_CantidadProceso.Value = obj_articulocomposicionproceso.cantidad(cls_articulocomposicionproceso_.enu_segunproduccion.fijo)
                    txt_CantidadProceso.Enabled = True
                    'txt_Valor.Properties.ReadOnly = False
                Case Else
                    txt_CantidadProceso.Value = obj_articulocomposicionproceso.cantidad(CType(cbo_TipoSegunProduccionProceso.SelectedIndex + 5, cls_articulocomposicionproceso_.enu_segunproduccion))
                    'txt_Valor.Text = obj_articulocomposicionproceso.valor(CType(cbo_TipoSegunProduccion.SelectedIndex + 5, cls_articulocomposicionproceso_.enu_segunproduccion))
            End Select
        End If
    End Sub
#End Region
#Region "Maquinaria"
    Private Sub CantidadCargarMaquinaria()
        txt_CantidadMaquinaria.Value = obj_articulocomposicionmaquinariatarea.cantidad
        If obj_articulocomposicionmaquinariatarea.tiposegunproduccion = cls_articulocomposicionmaquinariatarea_.enu_segunproduccion.fijo Then
            cbo_TipoSegunProduccionMaquinaria.SelectedIndex = 0
        Else
            cbo_TipoSegunProduccionMaquinaria.SelectedIndex = obj_articulocomposicionmaquinariatarea.tiposegunproduccion - 5
        End If
        cbo_TipoSegunProduccionMaquinaria_SelectedIndexChanged(Nothing, Nothing)
        If obj_articulocomposicionmaquinariatarea.tiposegunvalor = cls_articulocomposicionmaquinariatarea_.enu_segunvalor.proveedorUltimo Then
            cbo_TipoSegunProduccionMaquinaria.SelectedIndex = 0
            txt_CantidadMaquinaria.Value = 1
            lcg_CantidadMaquinaria.Enabled = False
        Else
            lcg_CantidadMaquinaria.Enabled = True
        End If
    End Sub
    Private Sub CargarSegunProduccionMaquinaria()
        cbo_TipoSegunProduccionMaquinaria.Properties.Items.Clear()
        For Each tipocosto As cls_articulocomposicionmaquinariatarea_.enu_segunproduccion In [Enum].GetValues(GetType(cls_articulocomposicionmaquinariatarea_.enu_segunproduccion))
            cbo_TipoSegunProduccionMaquinaria.Properties.Items.Add(EnumDescription(tipocosto))
        Next
        cbo_TipoSegunProduccionMaquinaria.SelectedIndex = 0
    End Sub
    Private Sub cbo_TipoSegunProduccionMaquinaria_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbo_TipoSegunProduccionMaquinaria.SelectedIndexChanged
        txt_CantidadMaquinaria.Enabled = False
        Select Case cbo_TipoSegunProduccionMaquinaria.SelectedIndex
            Case cls_articulocomposicionmaquinariatarea_.enu_segunproduccion.fijo
                txt_CantidadMaquinaria.Value = 0
                txt_CantidadMaquinaria.Enabled = True
            Case Else
                txt_CantidadMaquinaria.Value = obj_articulocomposicionmaquinariatarea.cantidad(CType(cbo_TipoSegunProduccionMaquinaria.SelectedIndex, cls_articulocomposicionmaquinariatarea_.enu_segunproduccion))
        End Select
    End Sub
#End Region
#End Region

    Private Sub btn_Siguiente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Siguiente.Click
        lac_general.BeginUpdate()
        If lcg_Cantidad.Visible Then
            GuardarCantidad()
            'TABResumenCargar()
            Me.DialogResult = Windows.Forms.DialogResult.OK
        End If
        If lcg_Valor.Visible Then
            GuardarValor()
            TABCantidadCargar()
            lcg_Valor.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
            lcg_Cantidad.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
            btn_Siguiente.Text = "Guardar >"
        End If
        If lcg_Composicion.Visible Then
            GuardarComposicion()
            TABValorCargar()
            lcg_Composicion.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
            lcg_Valor.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
            btn_Atras.Enabled = True
        End If
        lac_general.EndUpdate()
    End Sub

    Private Sub btn_Atras_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Atras.Click
        lac_general.BeginUpdate()
        If lcg_Valor.Visible Then
            lcg_Valor.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
            lcg_Composicion.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
            TABComposicionCargar()
            btn_Siguiente.Enabled = True
            btn_Siguiente.Text = "Siguiente >"
            btn_Atras.Enabled = False
        End If
        If lcg_Cantidad.Visible Then
            lcg_Cantidad.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
            lcg_Valor.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
            TABValorCargar()
            btn_Siguiente.Text = "Siguiente >"
        End If
        If lcg_Resumen.Visible Then
            lcg_Cantidad.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
            lcg_Resumen.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
            TABCantidadCargar()
            btn_Siguiente.Text = "Siguiente >"
        End If
        lac_general.EndUpdate()
    End Sub

    Public Sub New(ByRef prm_idarticuloprimario As Integer, ByVal prm_unidaddetalleprimario As cls_unidaddetalle_)
        ' This call is required by the designer.
        InitializeComponent()
        Me.Text = "Composicion de Articulo"
        int_idarticuloprimario = prm_idarticuloprimario
        obj_unidaddetalleprimario = prm_unidaddetalleprimario
        ' Add any initialization after the InitializeComponent() call.
    End Sub

    
    Private Sub btn_Cerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Cerrar.Click
        Me.DialogResult = Windows.Forms.DialogResult.Cancel
    End Sub
End Class
